/*
 *  HarmonicSound.h
 *  SoundController0002
 *
 *  Created by jiro on 11/06/16.
 *  Copyright 2011 jiro music. All rights reserved.
 *
 */

#pragma once 

#include "Sound.h"
#include <string>
#include <map>

namespace sc
{
namespace hs
{

	class HarmonicSound : public Sound
	{
	private:

		double nthOfHarmonic;

	public:

		HarmonicSound();

		HarmonicSound( Sound::WaveType type, ::sc::Note::MidiNumber midiNumber, double nthOfHarmonic );

		HarmonicSound( double frequency, double nthOfHarmonic );

		HarmonicSound( Sound::WaveType type, ::sc::Note::MidiNumber midiNumber, double nthOfHarmonic, double dynamics );

		HarmonicSound( double frequency, double nthOfHarmonic, double dynamics );

		double GetNthOfHarmonic() const;

		double GetFrequency() const;

		//	for stl map / set
		bool operator < ( const HarmonicSound& rhs ) const;

		bool operator == ( const HarmonicSound& rhs ) const;

		bool operator != ( const HarmonicSound& rhs ) const;

		std::string ToString() const;

	};

}
}
